home *** CD-ROM | disk | FTP | other *** search
/ PC Pro 2005 June (DVD) / DPPRO0605DVD.iso / Install / program files / Borland / BDS / 3.0 / Demos / Delphi.Net / CLR / CDSBrowser / CdsBrowserMain.pas < prev    next >
Encoding:
Pascal/Delphi Source File  |  2004-10-22  |  20.1 KB  |  561 lines

  1. unit CdsBrowserMain;
  2.  
  3. interface
  4.  
  5. uses
  6.   System.Drawing, System.Collections, System.ComponentModel,
  7.   System.Windows.Forms, System.Data, System.Globalization, System.Resources;
  8.  
  9. type
  10.   TMainForm = class(System.Windows.Forms.Form)
  11.   {$REGION 'Designer Managed Code'}
  12.   strict private
  13.     /// <summary>
  14.     /// Required designer variable.
  15.     /// </summary>
  16.     components: System.ComponentModel.IContainer;
  17.     StatusBar: System.Windows.Forms.StatusBar;
  18.     MainMenu: System.Windows.Forms.MainMenu;
  19.     MenuItemFile: System.Windows.Forms.MenuItem;
  20.     MenuItemFileOpen: System.Windows.Forms.MenuItem;
  21.     MenuItem3: System.Windows.Forms.MenuItem;
  22.     MenuItemFileExit: System.Windows.Forms.MenuItem;
  23.     OpenFileDialog: System.Windows.Forms.OpenFileDialog;
  24.     DataGrid: System.Windows.Forms.DataGrid;
  25.     DataSet1: System.Data.DataSet;
  26.     StatusBarPanel1: System.Windows.Forms.StatusBarPanel;
  27.     MenuItemView: System.Windows.Forms.MenuItem;
  28.     MenuItemViewExpand: System.Windows.Forms.MenuItem;
  29.     MenuItemViewCollapse: System.Windows.Forms.MenuItem;
  30.     ToolBar: System.Windows.Forms.ToolBar;
  31.     ToolBarButtonOpen: System.Windows.Forms.ToolBarButton;
  32.     ImageList: System.Windows.Forms.ImageList;
  33.     ToolBarButton1: System.Windows.Forms.ToolBarButton;
  34.     ToolBarButtonExpand: System.Windows.Forms.ToolBarButton;
  35.     ToolBarButtonCollapse: System.Windows.Forms.ToolBarButton;
  36.     PanelPreview: System.Windows.Forms.Panel;
  37.     Splitter1: System.Windows.Forms.Splitter;
  38.     Panel1Grid: System.Windows.Forms.Panel;
  39.     MenuItem1: System.Windows.Forms.MenuItem;
  40.     MenuItemViewDetail: System.Windows.Forms.MenuItem;
  41.     ToolBarButton2: System.Windows.Forms.ToolBarButton;
  42.     ToolBarButtonDetail: System.Windows.Forms.ToolBarButton;
  43.     TextBoxValue: System.Windows.Forms.TextBox;
  44.     PictureBoxValue: System.Windows.Forms.PictureBox;
  45.     MenuItemHelp: System.Windows.Forms.MenuItem;
  46.     MenuItemHelpAbout: System.Windows.Forms.MenuItem;
  47.     /// <summary>
  48.     /// Required method for Designer support - do not modify
  49.     /// the contents of this method with the code editor.
  50.     /// </summary>
  51.     procedure InitializeComponent;
  52.     procedure MenuItemOpen_Click(sender: System.Object; e: System.EventArgs);
  53.     procedure MenuItem4_Click(sender: System.Object; e: System.EventArgs);
  54.     procedure MenuItemViewExpand_Click(sender: System.Object; e: System.EventArgs);
  55.     procedure MenuItemViewCollapse_Click(sender: System.Object; e: System.EventArgs);
  56.     procedure ToolBar_ButtonClick(sender: System.Object; e: System.Windows.Forms.ToolBarButtonClickEventArgs);
  57.     procedure TMainForm_Load(sender: System.Object; e: System.EventArgs);
  58.     procedure MenuItemViewDetail_Click(sender: System.Object; e: System.EventArgs);
  59.     procedure DataGrid_CurrentCellChanged(sender: System.Object; e: System.EventArgs);
  60.     procedure MenuItemHelpAbout_Click(sender: System.Object; e: System.EventArgs);
  61.     procedure DataGrid_Navigate(sender: System.Object; ne: System.Windows.Forms.NavigateEventArgs);
  62.   {$ENDREGION}
  63.   strict protected
  64.     /// <summary>
  65.     /// Clean up any resources being used.
  66.     /// </summary>
  67.     procedure Dispose(Disposing: Boolean); override;
  68.   public
  69.     constructor Create;
  70.     procedure OpenFile(FileName: string);
  71.     procedure ShowPreview(Visible: Boolean);
  72.     procedure UpdateDetailPane;
  73.     procedure UpdateGui;
  74.   end;
  75.  
  76. implementation
  77.  
  78. uses
  79.   System.IO, PetrVones.Utils.DataPacket, AboutBox;
  80.  
  81. {$REGION 'Windows Form Designer generated code'}
  82. /// <summary>
  83. /// Required method for Designer support - do not modify
  84. /// the contents of this method with the code editor.
  85. /// </summary>
  86. procedure TMainForm.InitializeComponent;
  87. type
  88.   TSystem_Windows_Forms_StatusBarPanelArray = array of System.Windows.Forms.StatusBarPanel;
  89.   TSystem_Windows_Forms_MenuItemArray = array of System.Windows.Forms.MenuItem;
  90.   TSystem_Windows_Forms_ToolBarButtonArray = array of System.Windows.Forms.ToolBarButton;
  91. var
  92.   resources: System.Resources.ResourceManager;
  93. begin
  94.   Self.components := System.ComponentModel.Container.Create;
  95.   resources := System.Resources.ResourceManager.Create(TypeOf(TMainForm));
  96.   Self.StatusBar := System.Windows.Forms.StatusBar.Create;
  97.   Self.StatusBarPanel1 := System.Windows.Forms.StatusBarPanel.Create;
  98.   Self.MainMenu := System.Windows.Forms.MainMenu.Create;
  99.   Self.MenuItemFile := System.Windows.Forms.MenuItem.Create;
  100.   Self.MenuItemFileOpen := System.Windows.Forms.MenuItem.Create;
  101.   Self.MenuItem3 := System.Windows.Forms.MenuItem.Create;
  102.   Self.MenuItemFileExit := System.Windows.Forms.MenuItem.Create;
  103.   Self.MenuItemView := System.Windows.Forms.MenuItem.Create;
  104.   Self.MenuItemViewExpand := System.Windows.Forms.MenuItem.Create;
  105.   Self.MenuItemViewCollapse := System.Windows.Forms.MenuItem.Create;
  106.   Self.MenuItem1 := System.Windows.Forms.MenuItem.Create;
  107.   Self.MenuItemViewDetail := System.Windows.Forms.MenuItem.Create;
  108.   Self.MenuItemHelp := System.Windows.Forms.MenuItem.Create;
  109.   Self.MenuItemHelpAbout := System.Windows.Forms.MenuItem.Create;
  110.   Self.OpenFileDialog := System.Windows.Forms.OpenFileDialog.Create;
  111.   Self.DataSet1 := System.Data.DataSet.Create;
  112.   Self.ToolBar := System.Windows.Forms.ToolBar.Create;
  113.   Self.ToolBarButtonOpen := System.Windows.Forms.ToolBarButton.Create;
  114.   Self.ToolBarButton1 := System.Windows.Forms.ToolBarButton.Create;
  115.   Self.ToolBarButtonExpand := System.Windows.Forms.ToolBarButton.Create;
  116.   Self.ToolBarButtonCollapse := System.Windows.Forms.ToolBarButton.Create;
  117.   Self.ToolBarButton2 := System.Windows.Forms.ToolBarButton.Create;
  118.   Self.ToolBarButtonDetail := System.Windows.Forms.ToolBarButton.Create;
  119.   Self.ImageList := System.Windows.Forms.ImageList.Create(Self.components);
  120.   Self.PanelPreview := System.Windows.Forms.Panel.Create;
  121.   Self.PictureBoxValue := System.Windows.Forms.PictureBox.Create;
  122.   Self.TextBoxValue := System.Windows.Forms.TextBox.Create;
  123.   Self.Splitter1 := System.Windows.Forms.Splitter.Create;
  124.   Self.Panel1Grid := System.Windows.Forms.Panel.Create;
  125.   Self.DataGrid := System.Windows.Forms.DataGrid.Create;
  126.   (System.ComponentModel.ISupportInitialize(Self.StatusBarPanel1)).BeginInit;
  127.   (System.ComponentModel.ISupportInitialize(Self.DataSet1)).BeginInit;
  128.   Self.PanelPreview.SuspendLayout;
  129.   Self.Panel1Grid.SuspendLayout;
  130.   (System.ComponentModel.ISupportInitialize(Self.DataGrid)).BeginInit;
  131.   Self.SuspendLayout;
  132.   // 
  133.   // StatusBar
  134.   // 
  135.   Self.StatusBar.Location := System.Drawing.Point.Create(0, 407);
  136.   Self.StatusBar.Name := 'StatusBar';
  137.   Self.StatusBar.Panels.AddRange(TSystem_Windows_Forms_StatusBarPanelArray.Create(Self.StatusBarPanel1));
  138.   Self.StatusBar.ShowPanels := True;
  139.   Self.StatusBar.Size := System.Drawing.Size.Create(496, 19);
  140.   Self.StatusBar.TabIndex := 2;
  141.   // 
  142.   // StatusBarPanel1
  143.   // 
  144.   Self.StatusBarPanel1.AutoSize := System.Windows.Forms.StatusBarPanelAutoSize.Spring;
  145.   Self.StatusBarPanel1.Width := 480;
  146.   // 
  147.   // MainMenu
  148.   // 
  149.   Self.MainMenu.MenuItems.AddRange(TSystem_Windows_Forms_MenuItemArray.Create(Self.MenuItemFile, Self.MenuItemView, Self.MenuItemHelp));
  150.   // 
  151.   // MenuItemFile
  152.   // 
  153.   Self.MenuItemFile.Index := 0;
  154.   Self.MenuItemFile.MenuItems.AddRange(TSystem_Windows_Forms_MenuItemArray.Create(Self.MenuItemFileOpen, Self.MenuItem3, Self.MenuItemFileExit));
  155.   Self.MenuItemFile.Text := '&File';
  156.   // 
  157.   // MenuItemFileOpen
  158.   // 
  159.   Self.MenuItemFileOpen.Index := 0;
  160.   Self.MenuItemFileOpen.Shortcut := System.Windows.Forms.Shortcut.CtrlO;
  161.   Self.MenuItemFileOpen.Text := '&Open';
  162.   Include(Self.MenuItemFileOpen.Click, Self.MenuItemOpen_Click);
  163.   // 
  164.   // MenuItem3
  165.   // 
  166.   Self.MenuItem3.Index := 1;
  167.   Self.MenuItem3.Text := '-';
  168.   // 
  169.   // MenuItemFileExit
  170.   // 
  171.   Self.MenuItemFileExit.Index := 2;
  172.   Self.MenuItemFileExit.Text := 'E&xit';
  173.   Include(Self.MenuItemFileExit.Click, Self.MenuItem4_Click);
  174.   // 
  175.   // MenuItemView
  176.   // 
  177.   Self.MenuItemView.Index := 1;
  178.   Self.MenuItemView.MenuItems.AddRange(TSystem_Windows_Forms_MenuItemArray.Create(Self.MenuItemViewExpand, Self.MenuItemViewCollapse, Self.MenuItem1, Self.MenuItemViewDetail));
  179.   Self.MenuItemView.Text := '&View';
  180.   // 
  181.   // MenuItemViewExpand
  182.   // 
  183.   Self.MenuItemViewExpand.Index := 0;
  184.   Self.MenuItemViewExpand.Shortcut := System.Windows.Forms.Shortcut.CtrlE;
  185.   Self.MenuItemViewExpand.Text := '&Expand rows';
  186.   Include(Self.MenuItemViewExpand.Click, Self.MenuItemViewExpand_Click);
  187.   // 
  188.   // MenuItemViewCollapse
  189.   // 
  190.   Self.MenuItemViewCollapse.Index := 1;
  191.   Self.MenuItemViewCollapse.Shortcut := System.Windows.Forms.Shortcut.CtrlC;
  192.   Self.MenuItemViewCollapse.Text := '&Collapse rows';
  193.   Include(Self.MenuItemViewCollapse.Click, Self.MenuItemViewCollapse_Click);
  194.   // 
  195.   // MenuItem1
  196.   // 
  197.   Self.MenuItem1.Index := 2;
  198.   Self.MenuItem1.Text := '-';
  199.   // 
  200.   // MenuItemViewDetail
  201.   // 
  202.   Self.MenuItemViewDetail.Index := 3;
  203.   Self.MenuItemViewDetail.Shortcut := System.Windows.Forms.Shortcut.CtrlD;
  204.   Self.MenuItemViewDetail.Text := '&Detail pane';
  205.   Include(Self.MenuItemViewDetail.Click, Self.MenuItemViewDetail_Click);
  206.   // 
  207.   // MenuItemHelp
  208.   // 
  209.   Self.MenuItemHelp.Index := 2;
  210.   Self.MenuItemHelp.MenuItems.AddRange(TSystem_Windows_Forms_MenuItemArray.Create(Self.MenuItemHelpAbout));
  211.   Self.MenuItemHelp.Text := '&Help';
  212.   // 
  213.   // MenuItemHelpAbout
  214.   // 
  215.   Self.MenuItemHelpAbout.Index := 0;
  216.   Self.MenuItemHelpAbout.Text := '&About';
  217.   Include(Self.MenuItemHelpAbout.Click, Self.MenuItemHelpAbout_Click);
  218.   // 
  219.   // OpenFileDialog
  220.   // 
  221.   Self.OpenFileDialog.Filter := 'ClientDataSet XML files (*.xml)|*.xml';
  222.   Self.OpenFileDialog.Title := 'Open CDS file';
  223.   // 
  224.   // DataSet1
  225.   // 
  226.   Self.DataSet1.DataSetName := 'NewDataSet';
  227.   Self.DataSet1.Locale := System.Globalization.CultureInfo.Create('cs-CZ');
  228.   // 
  229.   // ToolBar
  230.   // 
  231.   Self.ToolBar.Appearance := System.Windows.Forms.ToolBarAppearance.Flat;
  232.   Self.ToolBar.Buttons.AddRange(TSystem_Windows_Forms_ToolBarButtonArray.Create(Self.ToolBarButtonOpen, Self.ToolBarButton1, Self.ToolBarButtonExpand, Self.ToolBarButtonCollapse, Self.ToolBarButton2, Self.ToolBarButtonDetail));
  233.   Self.ToolBar.DropDownArrows := True;
  234.   Self.ToolBar.ImageList := Self.ImageList;
  235.   Self.ToolBar.Location := System.Drawing.Point.Create(0, 0);
  236.   Self.ToolBar.Name := 'ToolBar';
  237.   Self.ToolBar.ShowToolTips := True;
  238.   Self.ToolBar.Size := System.Drawing.Size.Create(496, 28);
  239.   Self.ToolBar.TabIndex := 0;
  240.   Self.ToolBar.Wrappable := False;
  241.   Include(Self.ToolBar.ButtonClick, Self.ToolBar_ButtonClick);
  242.   // 
  243.   // ToolBarButtonOpen
  244.   // 
  245.   Self.ToolBarButtonOpen.ImageIndex := 0;
  246.   Self.ToolBarButtonOpen.ToolTipText := 'Open';
  247.   // 
  248.   // ToolBarButton1
  249.   // 
  250.   Self.ToolBarButton1.Style := System.Windows.Forms.ToolBarButtonStyle.Separator;
  251.   // 
  252.   // ToolBarButtonExpand
  253.   // 
  254.   Self.ToolBarButtonExpand.ImageIndex := 1;
  255.   Self.ToolBarButtonExpand.ToolTipText := 'Expand rows';
  256.   // 
  257.   // ToolBarButtonCollapse
  258.   // 
  259.   Self.ToolBarButtonCollapse.ImageIndex := 2;
  260.   Self.ToolBarButtonCollapse.ToolTipText := 'Collapse rows';
  261.   // 
  262.   // ToolBarButton2
  263.   // 
  264.   Self.ToolBarButton2.Style := System.Windows.Forms.ToolBarButtonStyle.Separator;
  265.   // 
  266.   // ToolBarButtonDetail
  267.   // 
  268.   Self.ToolBarButtonDetail.ImageIndex := 3;
  269.   Self.ToolBarButtonDetail.ToolTipText := 'Show detail pane';
  270.   // 
  271.   // ImageList
  272.   // 
  273.   Self.ImageList.ColorDepth := System.Windows.Forms.ColorDepth.Depth32Bit;
  274.   Self.ImageList.ImageSize := System.Drawing.Size.Create(16, 16);
  275.   Self.ImageList.ImageStream := (System.Windows.Forms.ImageListStreamer(resources.GetObject('ImageList.ImageStream')));
  276.   Self.ImageList.TransparentColor := System.Drawing.Color.White;
  277.   // 
  278.   // PanelPreview
  279.   // 
  280.   Self.PanelPreview.BorderStyle := System.Windows.Forms.BorderStyle.Fixed3D;
  281.   Self.PanelPreview.Controls.Add(Self.PictureBoxValue);
  282.   Self.PanelPreview.Controls.Add(Self.TextBoxValue);
  283.   Self.PanelPreview.Dock := System.Windows.Forms.DockStyle.Bottom;
  284.   Self.PanelPreview.Location := System.Drawing.Point.Create(0, 335);
  285.   Self.PanelPreview.Name := 'PanelPreview';
  286.   Self.PanelPreview.Size := System.Drawing.Size.Create(496, 72);
  287.   Self.PanelPreview.TabIndex := 3;
  288.   // 
  289.   // PictureBoxValue
  290.   // 
  291.   Self.PictureBoxValue.Dock := System.Windows.Forms.DockStyle.Fill;
  292.   Self.PictureBoxValue.Location := System.Drawing.Point.Create(0, 0);
  293.   Self.PictureBoxValue.Name := 'PictureBoxValue';
  294.   Self.PictureBoxValue.Size := System.Drawing.Size.Create(492, 68);
  295.   Self.PictureBoxValue.SizeMode := System.Windows.Forms.PictureBoxSizeMode.CenterImage;
  296.   Self.PictureBoxValue.TabIndex := 1;
  297.   Self.PictureBoxValue.TabStop := False;
  298.   // 
  299.   // TextBoxValue
  300.   // 
  301.   Self.TextBoxValue.BorderStyle := System.Windows.Forms.BorderStyle.None;
  302.   Self.TextBoxValue.Dock := System.Windows.Forms.DockStyle.Fill;
  303.   Self.TextBoxValue.Location := System.Drawing.Point.Create(0, 0);
  304.   Self.TextBoxValue.Multiline := True;
  305.   Self.TextBoxValue.Name := 'TextBoxValue';
  306.   Self.TextBoxValue.ReadOnly := True;
  307.   Self.TextBoxValue.ScrollBars := System.Windows.Forms.ScrollBars.Both;
  308.   Self.TextBoxValue.Size := System.Drawing.Size.Create(492, 68);
  309.   Self.TextBoxValue.TabIndex := 0;
  310.   Self.TextBoxValue.Text := 'Value';
  311.   // 
  312.   // Splitter1
  313.   // 
  314.   Self.Splitter1.Dock := System.Windows.Forms.DockStyle.Bottom;
  315.   Self.Splitter1.Location := System.Drawing.Point.Create(0, 332);
  316.   Self.Splitter1.Name := 'Splitter1';
  317.   Self.Splitter1.Size := System.Drawing.Size.Create(496, 3);
  318.   Self.Splitter1.TabIndex := 4;
  319.   Self.Splitter1.TabStop := False;
  320.   // 
  321.   // Panel1Grid
  322.   // 
  323.   Self.Panel1Grid.Controls.Add(Self.DataGrid);
  324.   Self.Panel1Grid.Dock := System.Windows.Forms.DockStyle.Fill;
  325.   Self.Panel1Grid.Location := System.Drawing.Point.Create(0, 28);
  326.   Self.Panel1Grid.Name := 'Panel1Grid';
  327.   Self.Panel1Grid.Size := System.Drawing.Size.Create(496, 304);
  328.   Self.Panel1Grid.TabIndex := 5;
  329.   // 
  330.   // DataGrid
  331.   // 
  332.   Self.DataGrid.DataMember := '';
  333.   Self.DataGrid.Dock := System.Windows.Forms.DockStyle.Fill;
  334.   Self.DataGrid.HeaderForeColor := System.Drawing.SystemColors.ControlText;
  335.   Self.DataGrid.Location := System.Drawing.Point.Create(0, 0);
  336.   Self.DataGrid.Name := 'DataGrid';
  337.   Self.DataGrid.ReadOnly := True;
  338.   Self.DataGrid.Size := System.Drawing.Size.Create(496, 304);
  339.   Self.DataGrid.TabIndex := 2;
  340.   Include(Self.DataGrid.Navigate, Self.DataGrid_Navigate);
  341.   Include(Self.DataGrid.CurrentCellChanged, Self.DataGrid_CurrentCellChanged);
  342.   // 
  343.   // TMainForm
  344.   // 
  345.   Self.AutoScaleBaseSize := System.Drawing.Size.Create(5, 13);
  346.   Self.ClientSize := System.Drawing.Size.Create(496, 426);
  347.   Self.Controls.Add(Self.Panel1Grid);
  348.   Self.Controls.Add(Self.Splitter1);
  349.   Self.Controls.Add(Self.PanelPreview);
  350.   Self.Controls.Add(Self.ToolBar);
  351.   Self.Controls.Add(Self.StatusBar);
  352.   Self.Menu := Self.MainMenu;
  353.   Self.MinimumSize := System.Drawing.Size.Create(300, 250);
  354.   Self.Name := 'TMainForm';
  355.   Self.Text := 'ClientDataSet xml files browser';
  356.   Include(Self.Load, Self.TMainForm_Load);
  357.   (System.ComponentModel.ISupportInitialize(Self.StatusBarPanel1)).EndInit;
  358.   (System.ComponentModel.ISupportInitialize(Self.DataSet1)).EndInit;
  359.   Self.PanelPreview.ResumeLayout(False);
  360.   Self.Panel1Grid.ResumeLayout(False);
  361.   (System.ComponentModel.ISupportInitialize(Self.DataGrid)).EndInit;
  362.   Self.ResumeLayout(False);
  363. end;
  364. {$ENDREGION}
  365.  
  366. procedure TMainForm.Dispose(Disposing: Boolean);
  367. begin
  368.   if Disposing then
  369.   begin
  370.     if Components <> nil then
  371.       Components.Dispose();
  372.   end;
  373.   inherited Dispose(Disposing);
  374. end;
  375.  
  376. constructor TMainForm.Create;
  377. begin
  378.   inherited Create;
  379.   //
  380.   // Required for Windows Form Designer support
  381.   //
  382.   InitializeComponent;
  383.   //
  384.   // TODO: Add any constructor code after InitializeComponent call
  385.   //
  386. end;
  387.  
  388. procedure TMainForm.OpenFile(FileName: string);
  389. var
  390.   Reader: StreamReader;
  391. begin
  392.   StatusBarPanel1.Text := '';
  393.   DataSet1.Reset;
  394.   UpdateGui;
  395.   UpdateDetailPane;
  396.   Update;
  397.   DataGrid.CaptionText := '';
  398.   DataGrid.DataSource := nil;
  399.   Reader := StreamReader.Create(FileName);
  400.   try
  401.     Cursor.Current := Cursors.WaitCursor;
  402.     FillDataSet(DataSet1, Reader);
  403.     DataGrid.SetDataBinding(DataSet1.Copy, 'ROW'); // workaround for columns caching problem
  404.     DataGrid.CaptionText := Path.GetFileName(FileName);
  405.     StatusBarPanel1.Text := FileName;
  406.     UpdateGui;
  407.     UpdateDetailPane;
  408.   finally
  409.     Cursor.Current := Cursors.Default;
  410.     Reader.Close;
  411.   end;
  412. end;
  413.  
  414. procedure TMainForm.UpdateGui;
  415. begin
  416.   MenuItemViewExpand.Enabled := DataSet1.Tables.Count > 1;
  417.   MenuItemViewCollapse.Enabled := DataSet1.Tables.Count > 1;
  418.   ToolBarButtonExpand.Enabled := DataSet1.Tables.Count > 1;
  419.   ToolBarButtonCollapse.Enabled := DataSet1.Tables.Count > 1;
  420.   ToolBarButtonDetail.Pushed := MenuItemViewDetail.Checked;
  421. end;
  422.  
  423. procedure TMainForm.DataGrid_Navigate(sender: System.Object; ne: System.Windows.Forms.NavigateEventArgs);
  424. begin
  425.   UpdateDetailPane;
  426. end;
  427.  
  428. procedure TMainForm.MenuItemHelpAbout_Click(sender: System.Object; e: System.EventArgs);
  429. begin
  430.   TAboutBox.ShowAboutBox;
  431. end;
  432.  
  433. procedure TMainForm.DataGrid_CurrentCellChanged(sender: System.Object; e: System.EventArgs);
  434. begin
  435.   UpdateDetailPane;
  436. end;
  437.  
  438. procedure TMainForm.MenuItemViewDetail_Click(sender: System.Object; e: System.EventArgs);
  439. begin
  440.   ShowPreview(not MenuItemViewDetail.Checked);
  441. end;
  442.  
  443. procedure TMainForm.TMainForm_Load(sender: System.Object; e: System.EventArgs);
  444. begin
  445.   ShowPreview(False);
  446.   UpdateGui;
  447. end;
  448.  
  449. procedure TMainForm.ToolBar_ButtonClick(sender: System.Object; e: System.Windows.Forms.ToolBarButtonClickEventArgs);
  450. begin
  451.   if e.Button = ToolBarButtonOpen then
  452.     MenuItemOpen_Click(sender, e)
  453.   else
  454.   if e.Button = ToolBarButtonCollapse then
  455.     MenuItemViewCollapse_Click(sender, e)
  456.   else
  457.   if e.Button = ToolBarButtonExpand then
  458.     MenuItemViewExpand_Click(sender, e)
  459.   else  
  460.   if e.Button = ToolBarButtonDetail then
  461.     MenuItemViewDetail_Click(sender, e);
  462. end;
  463.  
  464. procedure TMainForm.MenuItemViewCollapse_Click(sender: System.Object; e: System.EventArgs);
  465. begin
  466.   DataGrid.Collapse(-1);
  467. end;
  468.  
  469. procedure TMainForm.MenuItemViewExpand_Click(sender: System.Object; e: System.EventArgs);
  470. begin
  471.   DataGrid.Expand(-1);
  472. end;
  473.  
  474. procedure TMainForm.MenuItemOpen_Click(sender: System.Object; e: System.EventArgs);
  475. begin
  476.   OpenFileDialog.FileName := '';
  477.   if OpenFileDialog.ShowDialog = System.Windows.Forms.DialogResult.OK then
  478.     OpenFile(OpenFileDialog.FileName);
  479. end;
  480.  
  481. procedure TMainForm.MenuItem4_Click(sender: System.Object; e: System.EventArgs);
  482. begin
  483.   Application.Exit;
  484. end;
  485.  
  486. procedure TMainForm.ShowPreview(Visible: Boolean);
  487. begin
  488.   MenuItemViewDetail.Checked := Visible;
  489.   PanelPreview.Visible := Visible;
  490.   Splitter1.Visible := Visible;
  491.   UpdateGui;
  492.   if Visible then
  493.     UpdateDetailPane;
  494. end;
  495.  
  496. procedure TMainForm.UpdateDetailPane;
  497. var
  498.   R, C: Integer;
  499.   Value: &Object;
  500.   TextValue: Boolean;
  501.   Picture: Image;
  502.  
  503.   procedure TryReadPicture;
  504.   var
  505.     PictureData: TBytes;
  506.     MemStream: MemoryStream;
  507.   begin
  508.     PictureData := TBytes(Value);
  509.     MemStream := MemoryStream.Create(PictureData);
  510.     try
  511.       Picture := Image.FromStream(MemStream);
  512.       TextValue := False;
  513.     except
  514.       try
  515.         MemStream.SetLength(0);
  516.         MemStream.Write(PictureData, 8, System.Array(PictureData).Length - 8);
  517.         Picture := Image.FromStream(MemStream);
  518.         TextValue := False;
  519.       except
  520.         MemStream.Close;
  521.       end;
  522.     end;
  523.   end;
  524.  
  525. begin
  526.   if MenuItemViewDetail.Checked and (DataSet1.Tables.Count > 0) then
  527.   begin
  528.     R := DataGrid.CurrentCell.RowNumber;
  529.     C := DataGrid.CurrentCell.ColumnNumber;
  530.     try
  531.       Value := DataGrid[R, C];
  532.     except
  533.       on E: ArgumentException do
  534.         Value := '';
  535.     end;
  536.     Picture := nil;
  537.     TextValue := True;
  538.     if Value.GetType = typeof(TBytes) then
  539.       TryReadPicture;
  540.     if TextValue then
  541.     begin
  542.       TextBoxValue.Text := Value.ToString.Replace(#10, #13#10);
  543.       TextBoxValue.Visible := True;
  544.       PictureBoxValue.Visible := False;
  545.     end
  546.     else
  547.     begin
  548.       PictureBoxValue.Image := Picture;
  549.       TextBoxValue.Visible := False;
  550.       PictureBoxValue.Visible := True;
  551.     end;
  552.   end
  553.   else
  554.   begin
  555.     PictureBoxValue.Visible := False;
  556.     TextBoxValue.Visible := False;
  557.   end;
  558. end;
  559.  
  560. end.
  561.